REQUIRES: x86_64-linux

To update the inputs used below run Inputs/update_memprof_inputs.sh /path/to/updated/clang
RUN: llvm-profdata show --memory %p/Inputs/basic.memprofraw --profiled-binary %p/Inputs/basic.memprofexe -o - | FileCheck %s

We expect 2 MIB entries, 1 each for the malloc calls in the program. Any
additional allocations which do not originate from the main binary are pruned.

CHECK:  MemprofProfile:
CHECK-NEXT:   Summary:
CHECK-NEXT:     Version: 3
CHECK-NEXT:     NumSegments: {{[0-9]+}}
CHECK-NEXT:     NumMibInfo: 2
CHECK-NEXT:     NumAllocFunctions: 1
CHECK-NEXT:     NumStackOffsets: 2
CHECK-NEXT:   Segments:
CHECK-NEXT:   -
CHECK-NEXT:     BuildId: {{[[:xdigit:]]+}}
CHECK-NEXT:     Start: 0x{{[[:xdigit:]]+}}
CHECK-NEXT:     End: 0x{{[[:xdigit:]]+}}
CHECK-NEXT:     Offset: 0x{{[[:xdigit:]]+}}
CHECK-NEXT:   -

CHECK:   Records:
CHECK-NEXT:   -
CHECK-NEXT:     FunctionGUID: {{[0-9]+}}
CHECK-NEXT:     AllocSites:
CHECK-NEXT:     -
CHECK-NEXT:       Callstack:
CHECK-NEXT:       -
CHECK-NEXT:         Function: {{[0-9]+}}
CHECK-NEXT:         SymbolName: main
CHECK-NEXT:         LineOffset: 1
CHECK-NEXT:         Column: 21
CHECK-NEXT:         Inline: 0
CHECK-NEXT:       MemInfoBlock:
CHECK-NEXT:         AllocCount: 1
CHECK-NEXT:         TotalAccessCount: 2
CHECK-NEXT:         MinAccessCount: 2
CHECK-NEXT:         MaxAccessCount: 2
CHECK-NEXT:         TotalSize: 10
CHECK-NEXT:         MinSize: 10
CHECK-NEXT:         MaxSize: 10
CHECK-NEXT:         AllocTimestamp: {{[0-9]+}}
CHECK-NEXT:         DeallocTimestamp: {{[0-9]+}}
CHECK-NEXT:         TotalLifetime: 0
CHECK-NEXT:         MinLifetime: 0
CHECK-NEXT:         MaxLifetime: 0
CHECK-NEXT:         AllocCpuId: {{[0-9]+}}
CHECK-NEXT:         DeallocCpuId: {{[0-9]+}}
CHECK-NEXT:         NumMigratedCpu: 0
CHECK-NEXT:         NumLifetimeOverlaps: 0
CHECK-NEXT:         NumSameAllocCpu: 0
CHECK-NEXT:         NumSameDeallocCpu: 0
CHECK-NEXT:         DataTypeId: {{[0-9]+}}
CHECK-NEXT:         TotalAccessDensity: 20
CHECK-NEXT:         MinAccessDensity: 20
CHECK-NEXT:         MaxAccessDensity: 20
CHECK-NEXT:         TotalLifetimeAccessDensity: 20000
CHECK-NEXT:         MinLifetimeAccessDensity: 20000
CHECK-NEXT:         MaxLifetimeAccessDensity: 20000
CHECK-NEXT:     -
CHECK-NEXT:       Callstack:
CHECK-NEXT:       -
CHECK-NEXT:         Function: {{[0-9]+}}
CHECK-NEXT:         SymbolName: main
CHECK-NEXT:         LineOffset: 4
CHECK-NEXT:         Column: 15
CHECK-NEXT:         Inline: 0
CHECK-NEXT:       MemInfoBlock:
CHECK-NEXT:         AllocCount: 1
CHECK-NEXT:         TotalAccessCount: 2
CHECK-NEXT:         MinAccessCount: 2
CHECK-NEXT:         MaxAccessCount: 2
CHECK-NEXT:         TotalSize: 10
CHECK-NEXT:         MinSize: 10
CHECK-NEXT:         MaxSize: 10
CHECK-NEXT:         AllocTimestamp: {{[0-9]+}}
CHECK-NEXT:         DeallocTimestamp: {{[0-9]+}}
CHECK-NEXT:         TotalLifetime: 0
CHECK-NEXT:         MinLifetime: 0
CHECK-NEXT:         MaxLifetime: 0
CHECK-NEXT:         AllocCpuId: {{[0-9]+}}
CHECK-NEXT:         DeallocCpuId: {{[0-9]+}}
CHECK-NEXT:         NumMigratedCpu: 0
CHECK-NEXT:         NumLifetimeOverlaps: 0
CHECK-NEXT:         NumSameAllocCpu: 0
CHECK-NEXT:         NumSameDeallocCpu: 0
CHECK-NEXT:         DataTypeId: {{[0-9]+}}
CHECK-NEXT:         TotalAccessDensity: 20
CHECK-NEXT:         MinAccessDensity: 20
CHECK-NEXT:         MaxAccessDensity: 20
CHECK-NEXT:         TotalLifetimeAccessDensity: 20000
CHECK-NEXT:         MinLifetimeAccessDensity: 20000
CHECK-NEXT:         MaxLifetimeAccessDensity: 20000
